// 预处理指令 #include、#define、#if、#else、#line
#include <iostream>//包含头文件
using namespace std;
#define PI 3.14//创建符号常量通常称为宏。
#undef PI//取消符号常量
#define MIN(a, b) (((a) < (b)) ? a : b)//带参数的宏定义
//可以用内联函数代替宏，增强类型检查
int main()
{
#if defind DEBUG //条件编译：未定义DEBUG，不进行编译
    cerr << "Trace: Inside main function1" << endl;
#elif defined (TRACE)
    cerr << "Trace: Inside main function2" << endl;
#else
    cerr << "Trace: Inside main function3" << endl;
#endif

#define DEBUG//定义DEBUG
#ifdef DEBUG // 条件编译：只在调试时才编译执行下面的语句
    cerr << "Trace: Coming out of main function" << endl;
#endif

#if 0/* 这是注释部分 */
   cout << MKSTR(HELLO C++) << endl;//不进行编译
#endif
// #line改变行号,文件名
#line 50 __FILE__
//#转换参数为字符串
#define message_for(a, b) \
    cout << #a " and " #b ": We love you!" << endl
    message_for(Carole, Debra);
   
    int i, j;
    i = 100;
    j = 30;
    int ij = 300;
// ## 连接两个符号
#define concat(a, b) a ## b
    cout << "The minimum is " << MIN(i, j) << endl;
    cout <<concat(i,j) << endl;
    cout << "__DATE__ __TIME__ : " << __DATE__ << __TIME__ << endl; // C++预定义宏
    return 0;
}